Probabilistic inference algorithms may be used to explore many different systems. For example, a probabilistic inference algorithm may be used to infer attributes of search results, such as how relevant they are and how well they are summarized, based on how the user interacts with the search results. It is currently both difficult and time-consuming to write software to implement efficient probabilistic inference algorithms. Typically it may take a few days to create a model of a system and many weeks to create the code to implement the probabilistic inference algorithm. If the model is subsequently to be explored using a different inference algorithm (e.g. Expectation Propagation instead of Variational Message Passing), the code must be re-written, which again takes many weeks.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known methods of generating probabilistic inference algorithms.